#!/usr/bin/env node
/**
 * 1. `mkdir cli-sample`，创建项目文件夹。
    2. `cd cli-sample`，进入项目
    3. `npm init`，初始化node项目。
    4. 在 package.json 添加 bin 字段，用于指定Node.js CLI程序的入口文件。并且需要定义文件头`#!/usr/bin/env node`。
    7. `npm link`，把模块指向全局。
    8. 在terminal执行，`cli-sample`。
 */

/**
 * 使用`inquirer`模块，发起命令行询问
 * 根据用户回答的结果生成文件
 * 动态生成项目文件。在根目录新建一个文件夹templates用于存放模板文件
 */

const inquirer = require('inquirer')
const path = require('path')
const fs = require('fs')
const ejs = require('ejs')

inquirer.prompt([
  {
    type: 'input',
    name: 'name',
    message: 'Project name?'
  }
]).then(answers => {
  // 根据用户回答的结果生成文件
  // 模板目录
  const tmpDir = path.join(__dirname, 'templates')
  // 目标目录
  const destDir = process.cwd()
  // 将模板下的文件全部转换到目标目录
  fs.readdir(tmpDir, (err, files) => {
    if (err) throw err

    files.forEach(file => {
      // 通过ejs模板引擎渲染文件
      ejs.renderFile(path.join(tmpDir, file), answers, (err, result) => {
        if (err) throw err
        // 将结果写入目标目录
        console.log(result)
        fs.writeFileSync(path.join(destDir, file), result)
      })
    })
  })
})